Packet-based communication systems allow the user of a device, such as a personal computer, to communicate across a computer network such as the internet. Packet-based communication systems include voice over internet protocol (“VoIP”) communication systems. These systems are beneficial to the user as they are often of significantly lower cost than fixed line or mobile networks. This may particularly be the case for long-distance communication. To use a VoIP system, the user must install and execute communication client software on their user terminal. The communication client software provides the VoIP connections as well as other functions such as registration and authentication. In addition to voice communication, the packet-based communication systems can also provide further features such as video calling, file transfer, instant messaging (“IM”), and voicemail.
One type of packet-based communication system uses a peer-to-peer (“P2P”) overlay topology operating on the internet. To enable access to a peer-to-peer system, the user must execute P2P client software provided by a P2P software provider on their user terminal, and register with the P2P system. When the user registers with the P2P system the client software is provided with a digital certificate from a server. Once the client software has been provided with the certificate, communication can subsequently be set-up and routed between user terminals of the P2P system without the further use of a server. The network address of a destination user terminal can be found by the client software accessing a P2P database distributed across other user terminals of the P2P system. Once the network address of the destination user terminal is known, the calling user terminal can exchange of one or more digital certificates with the destination user terminal. The exchange of the digital certificates between the user terminals provides proof of the users' identities and that they are suitably authorised and authenticated in the P2P system. Therefore, the presentation of digital certificates provides trust in the identity of the user. It is therefore a characteristic of peer-to-peer communication that the communication can be established and proceeds without using a server, by operating from end-user terminal to end-user terminal with support provided by other end-user terminals of the P2P system. Further details on such a P2P system are disclosed in WO 2005/009019.
A problem with packet-based communication systems is that firewalls and/or network address translation (“NAT”) gateways are often present between one or both of a calling user terminal and a called user terminal. Firewalls and NAT gateways frequently block access to the packet-based communication system, such that connections between the calling user terminal and the called user terminal cannot be established. In particular, firewalls and NAT gateways often block incoming connections, which can prevent a direct connection being established between the calling and called user terminal. Direct connections between the calling and called user terminal are preferable, as they are the most reliable and have the lowest latency.
In order to alleviate the problems with strong firewalls or NAT gateways blocking direct connections between user terminals, the packet-based communication system can be arranged to utilise relay nodes in the connections. A relay node is chosen that does not have problems with firewalls or NAT gateways. In other words, a relay node that can openly access the packet-based communication system is selected. Because the relay node is unencumbered by strong firewalls or NAT gateways it is able to accept incoming connections. Each of the calling and called user terminals is controlled to connect to the relay (i.e. outgoing connections are established from both the calling and called user terminals to the relay to avoid their firewall problems). The relay can accept both of these incoming connections. Once these connections are established, the calling and called user terminal are able to communicate using the packet-based communication system, as the relay node passes the data packets between the two.
In a P2P system, the relay nodes can be other user terminals executing the communication client software that have favourable firewall/NAT gateway conditions. The relaying functionality is invisible to the users of these user terminals.
A problem with using a relay node is that it is not as reliable and has a higher latency and lower throughput compared to a direct connection between the calling and called user terminals. This is particularly the case where the relay node is another user terminal in the packet-based communication system. This is because the user of the user terminal that is acting as the relay node may choose to deactivate or disconnect their user terminal, thereby removing the relay node. This breaks the connection between the calling and called user terminals, and means that a new relay node must be found to replace it. In addition, the resources used at the relay node in relaying a connection (e.g. network bandwidth or CPU resources) must be limited, because otherwise the operation of the user terminal acting as a relay node would be significantly impaired.
The problems caused by relayed connections are particularly noticeable to the users when a large amount of data needs to be sent over the packet-based communication system, for example during a video call or a file transfer. There is therefore a need for a technique to address the aforementioned problems with relayed connections.